import torch
import torch.nn.functional as F

'''
使用PyTorch中的conv2d函数进行二维卷积操作，具体步骤如下：
1. 定义一个5x5的输入张量和一个3x3的卷积核。
2. 将输入和卷积核 reshape 成适合卷积操作的形状。
3. 使用不同的 stride 和 padding 参数调用 F.conv2d，分别计算输出结果并打印。
'''
input = torch.tensor([
    [1,2,0,3,1],
    [0,1,2,3,1],
    [1,2,1,0,0],
    [5,2,3,1,1],
    [2,1,0,1,1]
])

kernel = torch.tensor([
    [1,2,1],
    [0,1,0],
    [2,1,0]
])

input = torch.reshape(input,(1,1,5,5))
kernel = torch.reshape(kernel,(1,1,3,3))

print(input.shape)
print(kernel.shape)

output1 = F.conv2d(input,kernel,stride=1)
print(output1)

output2 = F.conv2d(input,kernel,stride=2)
print(output2)

output3 = F.conv2d(input,kernel,stride=1,padding=1)
print(output3)